package com.xishu.aop;

import com.xishu.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class CorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }

    private CorsConfiguration buildConfig() {
        Config config = Config.getInstance();

        if (config.isLocalNode() || config.isSingleNode()) {
            CorsConfiguration corsConfiguration = new CorsConfiguration();
            // 1允许任何域名使用
            corsConfiguration.addAllowedOrigin("*");
            // 2允许任何头
            corsConfiguration.addAllowedHeader("*");
            // 3允许任何方法（post、get等）
            corsConfiguration.addAllowedMethod("*");
            return corsConfiguration;
        } else {
            return new CorsConfiguration();
        }
    }
}